package com.chapter10;

import com.alibaba.fastjson.JSON;
import com.pojo.Book;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class Test0_xml {
    public static void main(String[] args) throws DocumentException {
        // 第一步，通过创建 SAXReader 对象。来读取 xml 文件，获取 Document 对象
        SAXReader reader = new SAXReader();
        Document document = reader.read(new File("resources/books.xml"));

        // 第二步，通过 Document 对象。拿到 XML 的根元素对象
        Element rootElement = document.getRootElement();
        //System.out.println(rootElement);

        // 第三步，通过根元素对象。获取所有的 book 标签对象
        List<Element> elements = rootElement.elements();
        //System.out.println(elements);

        List<Book> books = new ArrayList<>();
        //第四步，遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素，
        for (Element element : elements) {
            Book book = new Book();
            // 获取元素属性
            Attribute snAttr = element.attribute("sn");
            String sn = snAttr.getValue();

            // 获取元素
            Element nameEle = element.element("name");
            // 获取元素包含的值
            String name = nameEle.getText();

            Element priceEle = element.element("price");
            Double price = new Double(priceEle.getText());

            Element authorEle = element.element("author");
            String author = authorEle.getText();

            // 给Book对象赋值
            book.setSn(sn);
            book.setName(name);
            book.setPrice(price);
            book.setAuthor(author);
            books.add(book);
        }
        // 输出解析结果
        System.out.println(books);

        // 把Java中的对象转换为json格式的字符串
        String s = JSON.toJSONString(books);
        System.out.println(s);




    }
}
